<?php

  /**
   * Подставляет текст в составленный шаблон
   *
   * @param str     $place
   * @param mixed   $item
   * @param str     $template
   * @return string
   */
  function template_ins ( $place, $item, $template )
  {
    if ( ( $i = strpos( $template, '{{'.$place.'}' ) ) || ( $i === 0 ))
      // сложная подстановка текста и подшаблона
      if ( $item )
      {
      	// текст не пустой, подставляем
        $i += strlen( '{{'.$place.'}' );
        for (   $count = 1 ;
                ( (bool) $count ) && ( isset( $template[$i] ) ) 
                ; ++$i )
        {
          if ( $template{$i} == "}" )
            --$count;
          if ( $template{$i} == "{" )
            ++$count;
          if ( ($count == 1 ) && ( $template{$i} == '%' ) ) 
            if ( substr( $template, $i, 7 ) == "%_here%" )
              $template = substr( $template, 0, $i ) . $item . substr( $template, $i + 7 );
            
        }
        $template[$i-1] = ' ';
        $template = str_replace( '{{'.$place.'}', '', $template );
      }
      else
      {
      	// текст пустой, затираем
        $s1 = substr( $template, 0, $i );
        $i += strlen( '{{'.$place.'}' );
        for (   $count = 1 ;
                ( (bool) $count ) && ( isset( $template[$i] ) ) 
                ; ++$i )
        {
          if ( $template[$i] == "}" )
            --$count;
          if ( $template[$i] == "{" )
            ++$count;
        }
        $template = $s1 . substr( $template, $i );
      }
    else
      // простая замена таргета текстом
      $template = str_replace( "{".$place."}", $item, $template );
    return $template;
  }

  
  /**
   * Берет шаблон из файловой системы
   *
   * @param str $templ_id
   * @return text
   */
  function template_get ( $templ_id )
  {
    $tmp = $GLOBALS['admin'] ? $GLOBALS['templa'][$templ_id]
                             : $GLOBALS['templ'][$templ_id];
    if ( $tmp = implode( '', file( $tmp ) ) )
      return $tmp;
    return NULL;
  }
  

  
  /**
   * При необходимости создает ведущий нуль двузначного числа
   *
   * @param int $i
   * @return string
   */
  function zeros( $i ) {
    return (int)$i < 10 ? '0'.(int)$i : (string)$i;
  }

  
  /**
   * Обертка для функции mail
   *
   * @param str $to
   * @param str $subject
   * @param str $message
   * @param str $headers
   * @return bool
   */
  function send_mail( $to, $subject, $message, $headers='' )
  {
    $message = str_replace( "\n", "<br>\n", $message );
    $subject = iconv( 'utf-8', 'koi8-r',$subject );
    $subject = $subject ? '=?koi8-r?B?'.base64_encode($subject).'?=' : '' ;
    $head  = "Content-type: text/html; charset=utf-8; \n";
    $head .= "From: ".from_email."\n";
    $head .= $headers;
    return mail( $to, $subject, $message, $head );
  }
  
  

?>